উদাহরণ সহ NamedParameterJdbcTemplate এর ব্যবহার

Java Technologies - স্প্রিং জেডিবিসি (Spring JDBC) Spring JDBC এ NamedParameterJdbcTemplate ব্যবহার |
72
72

Spring JDBC-এ NamedParameterJdbcTemplate একটি বিশেষ ধরনের JdbcTemplate যা SQL কোয়েরি লেখার সময় নামকৃত প্যারামিটার ব্যবহার করতে সহায়ক। এটি কোডটি আরও পাঠযোগ্য এবং রক্ষণাবেক্ষণযোগ্য করে তোলে, কারণ SQL স্টেটমেন্টে প্যারামিটারগুলি নাম দিয়ে উল্লেখ করা হয়, না যে তাদের অবস্থান (position) দিয়ে।

NamedParameterJdbcTemplate ব্যবহার করার জন্য SQL কোয়েরিতে নামকৃত প্যারামিটার ব্যবহার করতে হবে এবং সেই প্যারামিটারগুলির মান Map বা SqlParameterSource এর মাধ্যমে সরবরাহ করতে হবে।

উদাহরণ:

ধরা যাক, আমাদের একটি Employee টেবিল রয়েছে যার মধ্যে id, name, এবং salary ফিল্ড রয়েছে। আমাদের একটি SQL কোয়েরি ব্যবহার করে NamedParameterJdbcTemplate এর মাধ্যমে ডেটাবেসে ডেটা ইনসার্ট এবং সিলেক্ট করার উদাহরণ নিচে দেখানো হলো।

১. Maven ডিপেনডেন্সি:

প্রথমে, আপনাকে Spring JDBC এবং Spring Context ডিপেনডেন্সি আপনার pom.xml ফাইলে যুক্ত করতে হবে (যদি না থাকে)।

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>5.3.24</version> <!-- সর্বশেষ সংস্করণ নিশ্চিত করতে Maven Repository থেকে চেক করুন -->
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.3.24</version>
</dependency>

২. NamedParameterJdbcTemplate ব্যবহার করার উদাহরণ:

২.১ DataSource কনফিগারেশন:

প্রথমে DataSource কনফিগারেশন করতে হবে। এই উদাহরণে, আমরা HikariCP ব্যবহার করছি, তবে আপনি Tomcat Connection Pool বা অন্য কোন পুল ব্যবহার করতে পারেন।

import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.sql.DataSource;

@Configuration
public class DataSourceConfig {

    @Bean
    public DataSource dataSource() {
        HikariConfig hikariConfig = new HikariConfig();
        hikariConfig.setJdbcUrl("jdbc:mysql://localhost:3306/your_database");
        hikariConfig.setUsername("your_username");
        hikariConfig.setPassword("your_password");
        hikariConfig.setDriverClassName("com.mysql.cj.jdbc.Driver");
        
        return new HikariDataSource(hikariConfig);
    }
}
২.২ NamedParameterJdbcTemplate কনফিগারেশন:

NamedParameterJdbcTemplate ক্লাসকে একটি JdbcTemplate এর বিকল্প হিসেবে ব্যবহার করা হয়। এতে SQL কোয়েরিতে প্যারামিটারগুলি নামের মাধ্যমে উল্লেখ করা হয়।

import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class EmployeeDAO {

    private final NamedParameterJdbcTemplate jdbcTemplate;

    @Autowired
    public EmployeeDAO(DataSource dataSource) {
        this.jdbcTemplate = new NamedParameterJdbcTemplate(dataSource);
    }

    // Employee ইনসার্ট করার জন্য
    public void addEmployee(int id, String name, double salary) {
        String sql = "INSERT INTO Employee (id, name, salary) VALUES (:id, :name, :salary)";
        
        MapSqlParameterSource parameters = new MapSqlParameterSource();
        parameters.addValue("id", id);
        parameters.addValue("name", name);
        parameters.addValue("salary", salary);
        
        jdbcTemplate.update(sql, parameters);
    }

    // সমস্ত Employee পড়ার জন্য
    public List<Employee> getAllEmployees() {
        String sql = "SELECT * FROM Employee";
        
        return jdbcTemplate.query(sql, new EmployeeRowMapper());
    }
}
২.৩ RowMapper তৈরি করা:

NamedParameterJdbcTemplate এর মাধ্যমে সিলেক্ট কোয়েরি চালানোর সময় আমরা RowMapper ব্যবহার করে রেজাল্ট সেটকে Employee অবজেক্টে রূপান্তর করি।

import org.springframework.jdbc.core.RowMapper;
import java.sql.ResultSet;
import java.sql.SQLException;

public class EmployeeRowMapper implements RowMapper<Employee> {

    @Override
    public Employee mapRow(ResultSet rs, int rowNum) throws SQLException {
        Employee employee = new Employee();
        employee.setId(rs.getInt("id"));
        employee.setName(rs.getString("name"));
        employee.setSalary(rs.getDouble("salary"));
        return employee;
    }
}
২.৪ Employee ক্লাস:

এখন, Employee ক্লাসটি তৈরি করি, যেখানে id, name, এবং salary ফিল্ড থাকবে।

public class Employee {

    private int id;
    private String name;
    private double salary;

    // Getters and Setters
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getSalary() {
        return salary;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }
}

৩. SQL কোয়েরি এবং Named Parameters:

  • SQL কোয়েরিতে প্যারামিটারগুলির নামটি :id, :name, এবং :salary এর মতো হবে।
  • MapSqlParameterSource ব্যবহার করে এই নামকৃত প্যারামিটারগুলির মান পাস করা হয়।
MapSqlParameterSource parameters = new MapSqlParameterSource();
parameters.addValue("id", id);
parameters.addValue("name", name);
parameters.addValue("salary", salary);

৪. ব্যবহার:

এখন আপনি EmployeeDAO ক্লাসটি ব্যবহার করে ডেটাবেসে ডেটা ইনসার্ট এবং সিলেক্ট করতে পারবেন।

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class Main {

    public static void main(String[] args) {
        // Spring কনটেক্সট ইনিশিয়ালাইজ করা
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(DataSourceConfig.class);

        EmployeeDAO employeeDAO = context.getBean(EmployeeDAO.class);

        // নতুন Employee ইনসার্ট করা
        employeeDAO.addEmployee(1, "John Doe", 50000);

        // সমস্ত Employee পড়া
        List<Employee> employees = employeeDAO.getAllEmployees();
        employees.forEach(employee -> System.out.println(employee.getName()));

        context.close();
    }
}

উপসংহার:

  • NamedParameterJdbcTemplate ব্যবহার করার সুবিধা হল SQL কোয়েরি আরও পাঠযোগ্য হয় এবং প্যারামিটারগুলির নাম সরাসরি কোডে উল্লেখ করা যায়।
  • এটি দীর্ঘ সময়ের জন্য রক্ষণাবেক্ষণের ক্ষেত্রে সহায়ক, কারণ কোডটি আরো স্পষ্ট এবং সহজ হয়।

এই উদাহরণটি দেখিয়েছে কিভাবে Spring JDBC তে NamedParameterJdbcTemplate ব্যবহার করে প্যারামিটারাইজড SQL কোয়েরি পরিচালনা করা যায়।

Content added By
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion